Перейти к основному содержимому

1.18. Система ввода и интерфейс

Всем

Система ввода и интерфейс

Система ввода и пользовательский интерфейс являются двумя фундаментальными компонентами игрового опыта. Они связывают игрока с игровым миром на уровне физического взаимодействия и когнитивного восприятия. Несмотря на то что эти понятия часто рассматриваются раздельно, они органически взаимосвязаны: интерфейс опирается на данные, полученные от системы ввода; система ввода, в свою очередь, реализует намерение игрока, выраженное через интерфейс. Эффективная реализация обеих систем определяет удобство, комфорт, а также саму возможность взаимодействия с игрой — от базовых действий до сложных тактических решений.

При разработке игры система ввода и интерфейс проектируются в тесной увязке с жанром, целевой аудиторией, платформой распространения и художественной концепцией проекта. Нарушение баланса между этими компонентами может привести к снижению вовлечённости, росту когнитивной нагрузки или даже к полной невозможности освоения игры. Соответственно, понимание их архитектуры, принципов работы и исторического контекста имеет значение как для разработчиков, так и для исследователей игровых медиа.

Устройства ввода

Исторически первые видеоигры опирались на ограниченный набор физических устройств ввода — в основном на простые переключатели, поворотные ручки и кнопочные панели. С развитием вычислительной мощности и усложнением игровых механик возникла необходимость в более дифференцированных, точных и эргономичных средствах взаимодействия. Современные устройства ввода можно классифицировать по физической реализации и по характеру передаваемых данных: дискретные (цифровые) сигналы, аналоговые сигналы и мультимодальные данные (например, жесты или речь).

Клавиатура и мышь

Клавиатура и мышь остаются наиболее распространённой конфигурацией для игр на персональных компьютерах. Их преимущества состоят в высокой пространственной точности (особенно у мыши в задачах прицеливания и перемещения курсора) и богатом наборе дискретных команд (до сотни клавиш, при условии комбинаций с модификаторами). Клавиатура обеспечивает независимое вводное пространство для движения и действий (например, WASD для перемещения и цифры для переключения оружия), тогда как мышь реализует управление углом обзора и направлением прицеливания.

Однако эта конфигурация не лишена недостатков. Отсутствие тактильной обратной связи по умолчанию, высокая когнитивная нагрузка при запоминании многочисленных клавишных комбинаций и отсутствие естественного отображения аналогового пространства (например, плавного поворота) вынуждают разработчиков внедрять дополнительные архитектурные решения: привязку к контексту (context-sensitive binding), гибкие макросы, динамические подсказки в интерфейсе. Также стоит отметить, что клавиатура не стандартизирована ни по физическому расположению клавиш (QWERTY, AZERTY, ДВОРЯНСКИЙ и др.), ни по электрическим характеристикам (rollover, ghosting), что требует от игровых движков реализации программной фильтрации и нормализации ввода.

Мышь, в свою очередь, транслирует относительное движение — смещение по осям X и Y за единицу времени. Это принципиально отличает её от абсолютных устройств (например, сенсорных экранов или дигитайзеров), и требует от игры корректной калибровки чувствительности, учёта DPI устройства и, при необходимости, реализации ускорения указателя (pointer acceleration), которое может как помогать (в стратегиях), так и мешать (в шутерах от первого лица).

Геймпады и джойстики

Геймпад — это портативное устройство ввода, удерживаемое двумя руками, оснащённое набором кнопок, аналоговыми стиками и триггерами (аналоговыми или цифровыми). Современные геймпады, такие как DualShock, DualSense, Xbox Wireless Controller, Nintendo Switch Pro Controller, поддерживают широкий спектр функций: гироскопическую ориентацию, вибрацию с обратной связью (в том числе тактильную, как в DualSense), микрофон (в некоторых моделях), а также расширенные возможности программной реконфигурации.

Традиционная компоновка геймпада включает:

  • Два аналоговых стика (обычно слева — для перемещения персонажа, справа — для управления камерой);
  • Четыре основные кнопки на правой панели (расположенные крестом или ромбом), часто используемые для основных действий (атака, прыжок, взаимодействие);
  • Две пары плечевых кнопок (верхние — обычно цифровые, нижние — триггеры, аналоговые);
  • Центральные системные и меню-кнопки;
  • При наличии — сенсорная панель, микрофон, разъём для гарнитуры.

Важно подчеркнуть: геймпад не является джойстиком, хотя в повседневной речи эти термины часто смешиваются. Джойстик — это устройство, в котором основной орган управления представляет собой рычаг (stick), отклоняемый в произвольном направлении (обычно по двум осям), часто дополненный кнопками на рукоятке или базе. Джойстики могут быть как цифровыми (4- или 8-позиционными), так и аналоговыми (с непрерывным диапазоном отклонения), и исторически использовались в авиасимуляторах, аркадных автоматах и ранних игровых консолях (Atari, Sega Master System). Геймпад же — это эргономическая эволюция джойстика, где функции рычага распределены между двумя мини-джойстиками, а кнопки вынесены на поверхность корпуса для удобного доступа большим пальцем.

Путаница между терминами возникла по трём причинам. Во-первых, в русскоязычной среде термин «джойстик» долгое время использовался как обобщающий для любого ручного контроллера. Во-вторых, многие геймпады сохраняют в своём названии слово joystick — например, analogue sticks в англоязычной документации, хотя речь идёт именно о мини-стиках геймпада. В-третьих, в аркадных автоматах и некоторых нишевых устройствах (например, HOTAS-комплектах — Hands On Throttle And Stick) действительно используются полноценные джойстики, и при их подключении к ПК они тоже называются joystick в системных API, что усугубляет семантическое смешение.

Специализированные устройства

Для симуляторов и аркадных жанров разработаны устройства, максимально приближающие физический контроль к реальному прототипу. Руль с педалями и переключателем передач имитирует органы управления автомобилем; лётный джойстик (flight stick) — штурвал и педали самолёта; аркадный стик (arcade stick) — панель с рычагом и кнопками, как в классических автоматах вроде Street Fighter II.

Эти устройства обеспечивают высокую степень иммерсивности и тактильной достоверности, но их применение ограничено жанрами. Архитектурно они отличаются повышенной точностью аналоговых датчиков, наличием механической фиксации (например, хода педалей), поддержкой force feedback (возвратной силы) и требованием от игры глубокой интеграции — например, калибровки нейтральной позиции, учёта нелинейности датчиков, коррекции дрейфа.

Сенсорные, аудиальные и мультимодальные интерфейсы

С распространением мобильных платформ на первый план вышли сенсорные экраны, микрофоны и камеры. Сенсорный ввод позволяет реализовывать прямое манипулирование объектами (перетаскивание, масштабирование «щипком», рисование жестов), но страдает от отсутствия тактильной обратной связи и зоны «мертвого прикосновения». Чтобы компенсировать это, разработчики используют визуальную и звуковую индикацию нажатий, анимацию предварительного отклика (predictive animation) и гистерезис в обработке жестов.

Микрофоны используются и для распознавания команд (например, в Tom Clancy’s EndWar или Star Wars: The Old Republic), однако их применение ограничено фоновым шумом, вариативностью произношения и задержкой распознавания. Камеры и датчики глубины (Kinect, Intel RealSense) открывают возможность управления жестами и позой, но требуют значительных вычислительных ресурсов и остаются нишевыми из-за низкой точности и высокой когнитивной нагрузки на игрока.


Интерпретация ввода

Процесс интерпретации ввода в видеоигре — это многоступенчатая цепочка преобразований, простирающаяся от физического взаимодействия игрока до вызова соответствующей игровой логики. Эта цепочка включает аппаратный уровень, драйверы операционной системы, API ввода, подсистему обработки в игровом движке и, наконец, игровую логику.

На аппаратном уровне устройство генерирует электрический сигнал — замыкание контакта, изменение сопротивления потенциометра, индукция в магнитном поле (в современных Hall-effect стиках) и так далее. Этот сигнал считывается контроллером устройства (например, чипом в геймпаде), кодируется в цифровой пакет (часто по протоколу HID — Human Interface Device) и передаётся через шину (USB, Bluetooth, Wi-Fi Direct) в хост-систему.

Операционная система получает пакет, интерпретирует его через драйвер устройства и передаёт в пользовательское пространство через стандартный API: на Windows — Raw Input, XInput, DirectInput (устаревший), HID API; на macOS — I/O Kit HID; на Linux — evdev, libinput или SDL2/Joystick API; на Android — InputEvent, MotionEvent; на iOS — UIKit touch events.

На уровне игрового движка начинается семантическая обработка. Современные движки (Unreal Engine, Unity, Godot) используют промежуточную абстракцию — подсистему ввода, которая изолирует игровую логику от конкретных устройств. Такая подсистема:

  • Нормализует входные данные (например, преобразует координаты стика из диапазона [-32768; 32767] в [-1.0; 1.0]);
  • Устраняет шум (например, «мёртвую зону» — dead zone — вокруг нейтрального положения стика);
  • Применяет калибровку и чувствительность;
  • Агрегирует состояния нескольких устройств;
  • Реализует схемы биндинга (binding schemes), связывающие физические элементы управления с логическими действиями.

Контроллер, в контексте архитектуры игры, — это программная сущность, инкапсулирующая логику обработки ввода для конкретного типа управления (например, PlayerController, VehicleController, MenuController). Контроллер получает нормализованные входные значения («ось X = 0.73», «кнопка Jump = нажата») и преобразует их в вызовы методов игровых объектов: Move(0.73, 0), Jump(), ToggleInventory().

Биндинг — это маппинг между физическим событием (нажатие клавиши «Space») и логическим действием («JumpAction»). Биндинги могут быть статическими (зашиты в код), конфигурируемыми (через .ini-файлы или JSON), или динамическими (меняются в зависимости от контекста: например, одна и та же кнопка «E» означает «открыть дверь» рядом с дверью и «подобрать предмет» рядом с предметом). Динамические биндинги требуют интеграции с системой context awareness — например, через raycast на ближайший интерактивный объект.

Важной особенностью является приоритизация ввода. В момент, когда игрок одновременно выполняет несколько действий (например, бежит в укрытие, стреляет и подбирает патроны), система ввода должна гарантировать, что критически важные команды (например, отмена перезарядки при получении урона) имеют более высокий приоритет. Это реализуется через очереди событий, флаги «consume input» и временные блокировки (input blocking).


Доступность

Доступность (accessibility) в контексте систем ввода означает способность игры адаптироваться к индивидуальным физическим и когнитивным возможностям игрока. Современные стандарты (например, Microsoft’s Xbox Accessibility Guidelines, GDC Accessibility Toolkit) предписывают обязательную реализацию следующих возможностей:

  • Полная переназначаемость управления (remappable controls);
  • Поддержка макросов и комбинированных действий (например, удержание «Shift» + клик мыши = прицеливание с увеличением);
  • Возможность отключения или замены требовательных к реакции механик (быстрых нажатий QTE, тайминг-зависимых акций);
  • Поддержка альтернативных устройств (например, адаптированных контроллеров Xbox Adaptive Controller);
  • Визуальная и тактильная индикация ввода (подсветка кнопок на экране, вибрация при успешном действии).

Особое внимание уделяется инклюзивному дизайну биндингов. Например, если игра требует одновременного нажатия трёх кнопок, это может быть невозможно для игроков с ограниченной подвижностью. Решение — введение «hold-and-tap» режимов или программных комбинаций (например, двойное нажатие «A» = удержание «A» + «B»). Некоторые игры (например, The Last of Us Part I) предлагают десятки настраиваемых параметров, включая автоматическую стрельбу, упрощённое вождение, замедление времени в бою.

С технической стороны доступность требует от подсистемы ввода гибкой архитектуры: поддержки слоёв управления (input layers), где, например, меню и игра используют разные наборы биндингов; состояний ввода (input states), позволяющих отключать одни действия при активации других; и профилей управления, сохраняемых между сессиями.


Интерфейс в видеоиграх

Пользовательский интерфейс (UI — User Interface) в видеоиграх отличается от интерфейсов других программных продуктов своей двойственной природой: он должен одновременно выполнять функциональные задачи (предоставлять данные, принимать команды) и нарративные (сохранять погружение, усиливать художественное единство). В отличие от офисных приложений, где интерфейс находится в постоянном фокусе внимания пользователя, в играх он зачастую стремится к незаметности — быть «невидимым посредником», активизирующимся только в момент необходимости.

Это достигается за счёт продуманной иерархии информации, динамической видимости элементов и глубокой интеграции в игровой мир. В результате интерфейс перестаёт быть надстройкой над игрой и становится её неотъемлемой частью — как саундтрек или уровень-дизайн.

Функциональные задачи игрового интерфейса

Интерфейс решает три основные категории задач, каждая из которых имеет собственные критерии качества и методы реализации.

Первая — передача информации. Игроку необходимо в режиме реального времени получать данные о состоянии игровой системы: здоровье, ресурсы, местоположение цели, текущая цель миссии, таймеры эффектов, статус союзников. Эта информация должна быть:

  • Своевременной — появляться до того, как запаздывание приведёт к ошибке (например, индикатор перегрева оружия должен начать мигать до блокировки стрельбы);
  • Структурированной — иерархически организованной по приоритету (жизнь персонажа > патроны > карта);
  • Кодированной — использующей стандартные семиотические конвенции (красный = опасность, зелёный = восстановление, мигание = предупреждение);
  • Контекстно-зависимой — адаптирующей содержание и форму под текущую ситуацию (в бою отображается только критически важная информация, в меню — полный набор параметров).

Вторая задача — обеспечение взаимодействия. Здесь интерфейс выступает как расширение системы ввода: кнопки выбора, слайдеры настройки, радиальные меню, drag-and-drop инвентаря. Важно, что в играх взаимодействие часто модально: режим диалога, режим крафта, режим карты — каждый требует собственного набора контроллов и визуального оформления. Смена модальности должна быть мгновенной, однозначной и обратимой — без потери состояния.

Третья задача — поддержание когерентности игрового мира. Это наиболее тонкий аспект: интерфейс не должен нарушать внутреннюю логику вселенной. Если игра стилизована под аналоговые технологии 1970-х, цифровой HUD с пиксельными шрифтами будет диссонировать; если персонаж — солдат будущего с нейроинтерфейсом, текстовые подсказки поверх экрана выглядят архаично. Здесь вступает в силу принцип диегетичности, о котором — ниже.

Типология игровых интерфейсов

Современная игровая индустрия оперирует несколькими взаимосвязанными классификациями интерфейсов. Наиболее устоявшаяся — по степени интеграции в игровой мир.

Недиегетический интерфейс

Недиегетический интерфейс существует вне игровой реальности. Он не является частью мира, которую «видит» персонаж — только игрок. Классический пример — HUD (Heads-Up Display): полоски здоровья в углу экрана, карта в правом верхнем углу, подсказки управления внизу. Такой интерфейс эффективен, стандартизирован и минимизирует когнитивную нагрузку за счёт привычности, но разрушает иммерсию.

Многие современные игры стремятся к постепенному сокращению недиегетического UI. Например, в DOOM (2016) и Immortal здоровье индексируется через визуальные эффекты на модели оружия (трещины на прицеле, подтёки крови на экране), а не через отдельную полоску; в Metro Exodus карта и инвентарь вызываются только при нажатии клавиши и отображаются как физические объекты в руках персонажа.

Диегетический интерфейс

Диегетический интерфейс — это элемент, который существует внутри игрового мира и воспринимается как его неотъемлемая часть. Он может быть:

  • Физическим: экран на приборной панели корабля (Elite Dangerous), цифровой дисплей на запястье персонажа (Destiny 2), интерактивная голограмма (Mass Effect);
  • Биологическим: визуальные искажения при ранении (Red Dead Redemption 2), звуковое эхо при потере слуха (Hellblade), текстура кожи, меняющая цвет при стрессе;
  • Поведенческим: анимация персонажа, указывающая на усталость (сгорбленная походка), или автоматическое прицеливание оружия при приближении к врагу.

Преимущество диегетического UI — полная интеграция в нарратив и эстетику. Его недостаток — ограниченность в передаче сложных данных (например, точного процента здоровья или списка всех доступных квестов). Поэтому большинство игр используют гибридный подход: базовые параметры передаются диегетически, а расширенная информация — через недиегетические меню по запросу.

Пространственный и метаинтерфейс

Пространственный интерфейс — это размещение элементов управления и информации непосредственно в трёхмерном пространстве игры. Например, кнопки на стене лаборатории, которые игрок нажимает, подходя к ним и активируя через raycast; или интерактивные таблички с текстом, которые нужно физически повернуть и прочитать. Такой интерфейс характерен для VR-игр (Half-Life: Alyx) и иммерсивных симуляторов (Prey, System Shock).

Метаинтерфейс — это интерфейс, который комментирует игру извне игровой реальности, часто нарушая четвёртую стену. Примеры: меню сохранения в The Stanley Parable, где сама система сохранений становится объектом иронии; экран загрузки в Loading Screen (арт-проект), где игрок управляет интерфейсом загрузки как персонажем. Метаинтерфейс редко используется в массовых проектах, но активно применяется в экспериментальных и нарративно-ориентированных играх.

Визуальное оформление и эргономика

Оформление интерфейса подчиняется тем же принципам, что и графический дизайн в целом, но с дополнительными ограничениями, накладываемыми игровым контекстом.

Цветовая семантика строится на универсальных ассоциациях: красный — угроза, потеря, запрет; зелёный — рост, восстановление, разрешение; синий — информация, нейтральность, холод; жёлтый — предупреждение, внимание. Однако в играх эти значения могут быть переопределены нарративно: в BioShock, например, зелёная жидкость ADAM символизирует опасную зависимость, а не помощь.

Шрифты и читаемость — критически важны. Даже в стилизованных играх (например, Dark Souls с готическими шрифтами) обеспечивается минимальный порог различимости: контраст с фоном, достаточный размер, отсутствие мелких засечек в движении. Для поддержки игроков с нарушениями зрения добавляются опции: увеличение текста, замена цветовой индикации на текстовую или тактильную (вибрация при наведении на пункт меню), режим высокой контрастности.

Анимация и временные параметры интерфейса строго регулируются. Появление элемента должно быть быстрее времени реакции игрока (обычно < 200 мс), но не мгновенным — иначе теряется ощущение физичности. Исчезновение — медленнее появления, чтобы дать игроку время зафиксировать информацию. Пульсация, мигание и «дыхание» элементов используются для привлечения внимания, но с ограничением по частоте (не более 2–3 Гц), чтобы избежать фотосенситивных реакций.

Связь интерфейса с системой ввода

Интерфейс и система ввода функционируют как единый контур обратной связи. Пример: в Rocket League прицельная линия отскока мяча (элемент UI) появляется только при удержании кнопки «показать траекторию» — это расширение функциональности ввода. Или: в Celeste при прыжке с ускорением от стены (wall jump) персонаж на мгновение слегка подсвечивается — это визуальная обратная связь на успешное выполнение сложного комбо-ввода.

Особую роль играет адаптация интерфейса под устройство ввода. При подключении геймпада вместо клавиатурных обозначений («WASD», «Space») отображаются иконки кнопок контроллера (□, △, LT). Это реализуется через систему динамических подсказок, которая:

  • Определяет активное устройство ввода (через API, например, Steam Input или XInput);
  • Загружает соответствующий набор иконок (sprite sheet) для текущей платформы;
  • Учитывает региональные различия (например, в Японии кнопка «○» означает «подтвердить», а «×» — «отмена», в отличие от западных версий PlayStation);
  • Поддерживает кастомные контроллеры (например, Xbox Elite с переназначаемыми пэддлами — в этом случае отображаются пользовательские иконки, заданные в профиле).

Этот механизм критически важен для кроссплатформенных игр: один и тот же экран инвентаря в Hollow Knight или Stardew Valley должен корректно отображать обозначения как для клавиатуры, так и для DualShock, Nintendo Switch Pro, Steam Deck и сторонних геймпадов.

Специфика платформенных раскладок кнопок

Различия в обозначениях основных кнопок между платформами — следствие исторического развития и эргономических решений.

  • PlayStation: □ (квадрат), △ (треугольник), ○ (круг), × (крест). Расположены ромбом. В японской версии ○ = «OK», × = «Cancel» (по аналогии с бумажными формами: кружок — «да», крестик — «нет»). В западных локализациях эта логика часто инвертируется, что вызывает путаницу у игроков, переключающихся между регионами.

  • Xbox: A (зелёная, внизу), B (красная, справа), X (синяя, слева), Y (жёлтая, вверху). Расположены крестом. Эта схема более интуитивна для западных игроков: A — основное действие, B — второстепенное/отмена. Цвета фиксированы на уровне аппаратуры и используются в UI глобально (например, зелёная кнопка на экране выбора всегда означает «подтвердить»).

  • Nintendo: A (справа), B (слева), X (вверху), Y (внизу) — но физически, на классических контроллерах, A и B были крупными кнопками в центре, а X/Y — малыми дополнительными. На Switch Pro Controller A/B/X/Y размещены крестом, как у Xbox, но логически A остаётся «основной» (например, в Zelda: Breath of the Wild A = действие, B = отмена/быстрое меню).

Обратите внимание: порядок названий (A, B, X, Y) не совпадает с пространственным расположением. Это источник частых ошибок при разработке кроссплатформенных игр. Поэтому профессиональные движки (Unreal Engine 5, Unity Input System) абстрагируются от физических меток и оперируют логическими осями и действиями: «PrimaryAction», «SecondaryAction», «MapView», «Jump» — а отображение иконок происходит на уровне UI-слоя.


Архитектурная интеграция UI и ввода в игровой движок

В профессиональной разработке UI и подсистема ввода рассматриваются как части единой петли управления (control loop), в которой цикл кадра включает следующие фазы:

  1. Сбор ввода — опрос всех подключённых устройств, нормализация сигналов, применение dead zones, калибровок и чувствительности;
  2. Фильтрация и приоритизация — отбраковка шумов, разрешение конфликтов (например, одновременный ввод с клавиатуры и геймпада), активация/деактивация слоёв ввода (input layers);
  3. Преобразование в действия — сопоставление событий с биндингами, вызов соответствующих методов контроллеров;
  4. Обновление состояния игры — выполнение игровой логики (физика, ИИ, анимации);
  5. Формирование визуального отклика — обновление UI в соответствии с новым состоянием и текущим контекстом ввода.

Эта последовательность должна выполняться в течение одного кадра (обычно ≤ 16,7 мс при 60 FPS), и любая задержка на этапе 1–3 приводит к росту input lag — ощущаемой игроком инерции управления. Поэтому архитектура подсистемы ввода оптимизируется на уровне:

  • Параллелизма — опрос устройств может происходить асинхронно в отдельном потоке, с синхронизацией через double-buffered состояния (чтобы избежать гонок данных при обработке кадра);
  • Кэширования — повторное использование нормализованных векторов (например, направления стика), если устройство не изменило состояние;
  • Ранней обработки — в некоторых движках (например, в Source 2) ввод обрабатывается до начала рендеринга текущего кадра, что сокращает задержку на целый кадр.

Аналогично, UI не отрисовывается «в лоб» каждый кадр. Вместо этого применяется концепция dirty flags и batch rendering: элемент интерфейса помечается как «грязный» (dirty), если его состояние изменилось (например, обновился счётчик патронов), и только такие элементы включаются в пакетную отрисовку. Это критически важно для сложных интерфейсов вроде инвентаря в Path of Exile или дерева навыков в Diablo IV, где сотни иконок и текстовых полей должны обновляться с минимальными затратами.

Immediate Mode vs Retained Mode UI

Эти два подхода к архитектуре UI-систем определяют производительность, гибкость, поддерживаемость и глубину интеграции с игровой логикой.

Retained Mode UI (сохраняемый режим) — доминирующий подход в промышленной разработке (Unreal UMG, Unity UI Toolkit (ранее UIElements), Scaleform, Coherent UI). В нём интерфейс строится как иерархия постоянных объектов (widgets, panels, buttons), каждый из которых хранит своё состояние (позиция, видимость, текст, обработчики событий). Преимущества:

  • Прямое соответствие с объектно-ориентированной архитектурой движка;
  • Встроенная поддержка анимаций, переходов, привязок данных (data binding);
  • Удобство отладки через инспекторы (например, Widget Inspector в Unreal);
  • Эффективная обработка событий через делегаты и слушатели.

Однако retained-интерфейсы страдают от инфляции состояния: если в меню 50 кнопок, каждая из них — полноценный объект со своими полями, коллбэками и графическими ресурсами. При частой перестройке (например, в динамическом списке предметов) возникают накладные расходы на аллокации и сборку мусора. Чтобы компенсировать это, используются паттерны object pooling (пулы виджетов) и virtualisation (рендер только видимой части списка — как в EVE Online при отображении тысяч кораблей в флоте).

Immediate Mode UI (немедленный режим) — альтернативный подход, популярный в инди-разработке и инструментах (Dear ImGui, nuklear, Unity’s legacy IMGUI). Здесь интерфейс не хранит состояние: каждый кадр вызывается функция, которая последовательно описывает, какие элементы должны быть отображены («если сейчас в бою — нарисовать полоску здоровья; иначе — скрыть»). Состояние (например, текст в поле ввода) управляется внешне, в игровом коде.

Преимущества immediate mode:

  • Минимальный оверхед по памяти — нет дерева виджетов;
  • Гибкость в динамическом построении интерфейса (идеален для отладочных меню, редакторов уровней);
  • Прямая связь с логикой без промежуточных слоёв.

Недостатки:

  • Сложность реализации сложных анимаций и переходов;
  • Риск «мигания» интерфейса, если логика построения зависит от нестабильных условий;
  • Отсутствие визуальных редакторов «из коробки» — всё пишется кодом.

В профессиональной практике часто используется гибрид: retained mode для основного UI (меню, HUD), immediate mode — для отладочных панелей, консольных команд и runtime-инструментов. Например, в Star Citizen основной интерфейс построен на Scaleform (retained), а внутренние инженерные панели — на ImGui (immediate).


Адаптация к разрешению, соотношению сторон и локализации

Интерфейс должен корректно отображаться на экранах от 480p (Steam Deck в низких настройках) до 4K (ультраширокие мониторы), с соотношениями сторон 4:3, 16:9, 21:9 и даже 32:9. Это требует применения следующих стратегий:

  • Анкоринг и пивоты (anchoring & pivots) — элементы привязываются к границам экрана или родительским панелям («левый верхний угол — прижат к левому краю, правый — к центру»). В Unreal Engine это реализуется через Anchors, в Unity — через Anchored Position в RectTransform.

  • Масштабирование по reference resolution — выбирается эталонное разрешение (например, 1920×1080), и все размеры задаются в «виртуальных пикселях». При рендеринге на другом разрешении применяется uniform scale, с коррекцией для избежания размытия (pixel snapping).

  • Адаптивные layout-группы — панели, которые автоматически перестраивают расположение дочерних элементов при изменении размера: горизонтальные/вертикальные стеки, сетки с динамическим количеством столбцов, flow layouts (как в инвентаре Terraria).

  • Безопасные зоны (safe areas) — особенно важно для ультрашироких мониторов и VR. Критически важная информация (цель прицеливания, статус здоровья) размещается в центральной области, исключая крайние 10–15% по горизонтали, где может быть искажение или отсутствие отображения (например, на проекторах).

Локализация накладывает дополнительные требования:

  • Расширяемость по ширине — английский текст часто короче немецкого или русского. Элементы должны иметь минимальную ширину, но допускать расширение (например, button → Taste в немецком переводе). В движках это решается через auto-layout и content size fitter.

  • Направление письма — при поддержке арабского или иврита интерфейс должен зеркалиться (right-to-left layout), включая иконки (стрелка «назад» меняет сторону). Это требует от UI-системы поддержки layout mirroring на уровне фреймворка.

  • Шрифты и символы — единый шрифтовый атлас должен включать все необходимые глифы (латиница, кириллица, CJK), либо использоваться динамическая подгрузка символов (dynamic font atlas generation), как в Frostpunk.

  • Культурные конвенции — как уже упоминалось, обозначения кнопок (○/×), цветовая семантика и даже иконография (например, изображение «дома») могут варьироваться. Локализованные ассеты управляются через систему локализационных таблиц (например, .po-файлы в Godot или Localization Dashboard в Unreal).


Кейсы

Dead Space (2008, 2023 Remake)

Интерфейс Dead Space полностью интегрирован в экзокостюм главного героя — инженерного скафандра RIG. Полоса здоровья — световая полоса на спине персонажа, видимая в отражениях и через плечо. Заряд оружия отображается на самом оружии. Карта и инвентарь вызываются как голограммы, проецируемые из запястья.

Архитектурно это достигнуто за счёт:

  • Рендеринга UI в отдельный render target, привязанный к скелету персонажа (bone-attached RT);
  • Использования post-process effects для стилизации голограмм (scanlines, noise, chromatic aberration);
  • Синхронизации анимаций интерфейса с физикой персонажа (голограмма дрожит при беге);
  • Отказа от недиегетических подсказок — обучение происходит через контекст (например, враг с ослабленной бронёй светится в инфракрасном спектре, и игрок интуитивно понимает: стреляй туда).

В ремейке 2023 года диегетичность доведена до предела: даже экран загрузки стилизован под диагностику скафандра.

Metroid Prime

В Metroid Prime весь интерфейс — часть шлема костюма Самус. Визор автоматически переключается между режимами (Combat, Scan, Thermal, X-Ray), и каждый режим меняет визуальный стиль и логику ввода: в Scan Mode прицел превращается в курсор, активирующий сканирование объектов; в Thermal — выделяет источники тепла.

Ключевое решение — контекстно-зависимое переназначение осей. Ось прицеливания (right stick) в бою управляет камерой, а в Scan Mode — курсором сканера. Это реализовано через input contexts (в современных терминах — input layers): при активации Scan Mode отключается стандартная камера, включается отдельный контроллер сканера, и UI переключается на соответствующий визор.

Return of the Obra Dinn

«Морская книга», в которую игрок заносит данные о погибших, построена как физический артефакт с разворотами, закладками, пометками. Ввод осуществляется через мышь и клавиши, но каждое действие имитирует аналоговую операцию: листание страницы (scroll wheel), выбор персонажа (клик по силуэту), запись имени (ввод текста в поле, стилизованное под чернильную запись).

Важно: UI не подсказывает — он требует интерпретации. Игрок сам устанавливает связь между визуальным образом («человек с топором») и именем в списке экипажа. Это достигнуто за счёт отказа от автоматической привязки и введения ручной верификации: чтобы подтвердить гипотезу, нужно нажать «✓», и только тогда запись фиксируется.

EVE Online — масштабируемый retained UI для тысяч объектов

Интерфейс EVE Online — один из самых сложных в игровой индустрии: радар, дерево кораблей, окна чата, карты, инвентарь, рынок, настройки корабля — всё должно работать при одновременном отображении до 3000 кораблей в одном бою.

Решения:

  • Виртуализация списков — только видимые строки таблицы инстанциируются; при прокрутке повторно используются объекты из пула;
  • Группировка и агрегация — вместо отображения 500 отдельных кораблей — иконка «Флот: 500 кораблей» с раскрытием по клику;
  • Отложенная загрузка данных — информация о корабле подгружается только при наведении курсора;
  • Оптимизация шрифтов — использование SDF-шрифтов (Signed Distance Fields) для резкого масштабирования без потери качества.